home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO017.dsk / EXEC.MAKER.bas < prev    next >
BASIC Source File  |  2012-02-16  |  8KB  |  140 lines

  1. 5  REM   EXEC.MAKER COPYRIGHT (C) 1985 STEVEN HUMPAGE
  2. 10  GOTO 30000
  3. 50  ONERR  GOTO 70
  4. 53 A =  PEEK(49152): IF A <128  THEN 53
  5. 55  POKE 49168,0:A = A -128
  6. 60  IF A < >8  AND A < >10  AND A < >11  AND A < >13  AND A < >21  AND A < >32  THEN  PRINT  CHR$(7);: GOTO 53
  7. 65  RETURN 
  8. 70 ERR =  PEEK(222):L =  PEEK(218) + PEEK(219) *256: CALL  -3288
  9. 75  IF ERR = 255  THEN  PRINT  CHR$(7);: GOTO 53
  10. 80  GOTO 20000
  11. 100  HOME 
  12. 110  PRINT "EXEC.MAKER": PRINT 
  13. 120  PRINT "ENTER SOURCE PREFIX:": PRINT "/";
  14. 130 CH = 2: GOSUB 10000:SP$ = IN$: IF IN$ = ""  THEN 100
  15. 135 LS =  LEN(SP$): IF ( LEFT$(SP$,1) = "/")  AND LS >1  THEN SP$ =  RIGHT$(SP$,LS -1): GOTO 135
  16. 136 SP$ = "/" +SP$
  17. 137 LS =  LEN(SP$): IF ( RIGHT$(SP$,1) = "/")  AND LS >1  THEN SP$ =  LEFT$(SP$,LS -1): GOTO 137
  18. 140  IF SP$ = "/"  THEN  PRINT  CHR$(7);: GOTO 100
  19. 150  VTAB 4: CALL EOL: PRINT SP$
  20. 1000  ONERR  GOTO 19000
  21. 1010  PRINT D$;"OPEN "SP$",TDIR"
  22. 1020  PRINT D$;"READ "SP$
  23. 1030  INPUT A$,A$,A$:K = 1: ONERR  GOTO 1070
  24. 1040  INPUT A$: IF  LEN(A$) = 0  THEN 1090
  25. 1050 FILE$(K) =  MID$ (A$,2,15):FT$(K) =  MID$ (A$,18,3):FL$(K) =  LEFT$(A$,1):K = K +1
  26. 1060  GOTO 1040
  27. 1070 ERR =  PEEK(222):L =  PEEK(218) + PEEK(219) *256: CALL  -3288: POKE 216,0: IF ERR = 5  THEN 1090
  28. 1080  GOTO 20000: REM  FATAL ERROR
  29. 1090  PRINT D$;"CLOSE "SP$
  30. 1092  IF K = 1  THEN MSG$ = "NO FILES IN THAT DIRECTORY":L = 1010: GOTO 19100: REM  L=1010 IS A CHEAP TRICK
  31. 1095 NFILES = K -1:NMARKED = 0
  32. 1100 KN = 0:OLDROW = 5:NROW = 5: FOR K = 0 TO NFILES:MARK$(K) = " ": NEXT K: GOSUB 11000:FIRST = TRUE: GOSUB 2000: REM  MASK FIRST LINE INVERSE
  33. 1110  GOSUB 50: REM   READ ARROW, SPACE, OR RETURN
  34. 1120  IF A = 13  THEN  GOTO 5000: REM  GET DESTINATION AND COPY
  35. 1130  IF A < >8  AND A < >11  THEN 1170
  36. 1140  IF OLDROW < >5  THEN NROW = OLDROW -1: GOSUB 2000: GOTO 1110
  37. 1150  IF OLDROW = 5  AND KN = 0  THEN  PRINT  CHR$(7);: GOTO 1110
  38. 1160 KN = KN -19: GOSUB 11000:NROW = 23:FIRST = TRUE: GOSUB 2000: GOTO 1110
  39. 1170  IF (A < >10  AND A < >21)  THEN 1210
  40. 1180  IF OLDROW <23  AND (KN +OLDROW -5) <NFILES  THEN NROW = OLDROW +1: GOSUB 2000: GOTO 1110
  41. 1190  IF OLDROW = 23  AND (KN +OLDROW -5) <NFILES  THEN KN = KN +19: GOSUB 11000:NROW = 5:FIRST = TRUE: GOSUB 2000: GOTO 1110
  42. 1200  PRINT  CHR$(7);: GOTO 1110
  43. 1210  IF A = 32  THEN  GOSUB 3000: GOTO 1110
  44. 1220  STOP 
  45. 2000  IF FIRST  THEN 2040
  46. 2010  VTAB OLDROW: POKE 36,2: PRINT FILE$(KN +OLDROW -5)
  47. 2040 FIRST = FALSE
  48. 2050  VTAB NROW: POKE 36,2: INVERSE : PRINT FILE$(KN +NROW -5): NORMAL 
  49. 2060 OLDROW = NROW
  50. 2070  RETURN 
  51. 3000 K = KN +OLDROW -5
  52. 3010  IF MARK$(K) = " "  THEN MARK$(K) = ">":NMARKED = NMARKED +1: GOTO 3040
  53. 3030 MARK$(K) = " ":NMARKED = NMARKED -1
  54. 3040  VTAB OLDROW: POKE 36,0: PRINT MARK$(K)
  55. 3050  RETURN 
  56. 5000  POKE 36,0: VTAB 5: CALL EOP: IF NMARKED = 0  THEN  PRINT  CHR$(7)"NO FILE SELECTED": GOTO 5280
  57. 5010  PRINT "ENTER DESTINATION PREFIX:": PRINT "/";:CH = 2: GOSUB 10000:DP$ = IN$: IF IN$ = ""  THEN  PRINT  CHR$(7);: GOTO 5000
  58. 5020 LD =  LEN(DP$): IF ( LEFT$(DP$,1) = "/")  AND LD >1  THEN DP$ =  RIGHT$(DP$,LD -1): GOTO 5020
  59. 5021 DP$ = "/" +DP$
  60. 5022 LD =  LEN(DP$): IF ( RIGHT$(DP$,1) = "/")  AND LD >1  THEN DP$ =  LEFT$(DP$,LD -1): GOTO 5022
  61. 5023  IF DP$ = "/"  THEN  PRINT  CHR$(7);: GOTO 5000
  62. 5025  IF SP$ = DP$  THEN  PRINT  CHR$(7);: GOTO 5000
  63. 5030  IF MARK$(0) = ">"  THEN  FOR J = 1 TO NFILES:MARK$(J) = ">": NEXT J
  64. 5040  VTAB 6: CALL EOP: PRINT DP$
  65. 5100  POKE 36,0: VTAB 7: CALL EOP
  66. 5110  PRINT "ENTER FULL PATH NAME OF EXEC FILE:": PRINT "/";:CH = 2: GOSUB 10000:EX$ = IN$: IF IN$ = ""  THEN  PRINT  CHR$(7);: GOTO 5100
  67. 5120 LX =  LEN(EX$): IF ( LEFT$(EX$,1) = "/")  AND LX >1  THEN EX$ =  RIGHT$(EX$,LX -1): GOTO 5120
  68. 5130 EX$ = "/" +EX$
  69. 5140 LX =  LEN(EX$): IF ( RIGHT$(EX$,1) = "/")  AND LX >1  THEN EX$ =  LEFT$(EX$,LX -1): GOTO 5140
  70. 5150  VTAB 8: CALL EOP: PRINT EX$
  71. 5200  ONERR  GOTO 6000
  72. 5210  PRINT D$;"OPEN "EX$
  73. 5220  PRINT D$;"APPEND "EX$
  74. 5230  FOR K = 1 TO NFILES
  75. 5240  IF MARK$(K) = " "  OR FT$(K) = "DIR"  THEN 5260
  76. 5250  PRINT "COPY "SP$"/"FILE$(K)","DP$"/"FILE$(K)
  77. 5260  NEXT K
  78. 5270  PRINT D$;"CLOSE "EX$
  79. 5280  PRINT "CONTINUE? (Y/N) ";: GET A$
  80. 5290  IF A$ = "Y"  OR A$ = "y"  THEN 100
  81. 5300  IF A$ < >"N"  AND A$ < >"n"  THEN  PRINT  CHR$(7);: VTAB ( PEEK(37)): POKE 36,0: CALL EOP: GOTO 5280
  82. 5310  END 
  83. 6000 ERR =  PEEK(222):L =  PEEK(218) + PEEK(219) *256: CALL  -3288
  84. 6010  IF ERR < >10  THEN 19005
  85. 6020  VTAB 20: POKE 36,0: CALL EOP: PRINT EX$" IS LOCKED. UNLOCK? (Y/N) ";: GET A$
  86. 6030  IF A$ = "Y"  OR A$ = "y"  THEN  PRINT D$;"UNLOCK "EX$: GOTO 5220
  87. 6040  IF A$ < >"N"  AND A$ < >"n"  THEN  PRINT  CHR$(7);: GOTO 6020
  88. 6050  GOTO 5000
  89. 9999  REM   PREFIX INPUT SUBROUTINE
  90. 10000 IN$ = "":TEMP$ = ""
  91. 10010  GET A$: IF A$ =  CHR$(13)  THEN  POKE 36,CH -1: CALL EOL: PRINT IN$: RETURN 
  92. 10012  IF A$ =  CHR$(27)  THEN  VTAB 9: POKE 36,0: CALL EOP: POP : GOTO 5280
  93. 10015  IF A$ > = "a"  AND A$ < = "z"  THEN A$ =  CHR$( ASC(A$) -32)
  94. 10020  IF (A$ > = "A"  AND A$ < = "Z")  OR (A$ > = "0"  AND A$ < = "9")  OR A$ = "."  OR A$ = "/"  THEN  GOTO 10050
  95. 10030  IF A$ =  CHR$(8)  AND  LEN(IN$) >1  THEN  PRINT  CHR$(8);:IN$ =  LEFT$(IN$, LEN(IN$) -1): GOTO 10010
  96. 10035  IF A$ =  CHR$(8)  AND  LEN(IN$) >0  THEN  PRINT A$;:IN$ = "": GOTO 10010
  97. 10040  IF A$ =  CHR$(21)  AND  LEN(IN$) < LEN(TEMP$)  THEN A$ =  MID$ (TEMP$, LEN(IN$) +1,1): PRINT A$;:IN$ = IN$ +A$: GOTO 10010
  98. 10045  PRINT  CHR$(7);: GOTO 10010
  99. 10050 IN$ = IN$ +A$: IF  LEN(IN$) > LEN(TEMP$)  THEN TEMP$ = IN$
  100. 10055  PRINT A$;
  101. 10060  GOTO 10010
  102. 11000  POKE 36,0: VTAB 5:J = 0: FOR K = KN TO KN +18
  103. 11020  IF KN +J >NFILES  THEN  CALL EOL: PRINT : GOTO 11040
  104. 11030  PRINT MARK$(K)FL$(K)FILE$(K)" "FT$(K)
  105. 11040 J = J +1: NEXT K
  106. 11050  RETURN 
  107. 19000 ERR =  PEEK(222):L =  PEEK(218) + PEEK(219) *256: POKE 216,0
  108. 19005  IF ERR = 6  OR ERR = 7  THEN MSG$ = "PATH NOT FOUND": GOTO 19100
  109. 19010  IF ERR = 4  THEN MSG$ = DP$ +" IS WRITE PROTECTED": GOTO 19100
  110. 19015  IF ERR = 9  THEN MSG$ = "DISK FULL": GOTO 19100
  111. 19020  IF ERR = 13  THEN MSG$ = "FILE TYPE MISMATCH": GOTO 19100
  112. 19025  IF ERR = 16  THEN MSG$ = "SYNTAX ERROR": GOTO 19100
  113. 19030  IF ERR = 17  THEN MSG$ = "DIRECTORY FULL": GOTO 19100
  114. 19035  GOTO 20000
  115. 19100  VTAB 22: POKE 36,0: CALL EOL: PRINT MSG$ CHR$(7)" PRESS A KEY";: GET A$: PRINT A$
  116. 19105  CALL  -3288
  117. 19110  IF L = 1010  THEN 100: REM   CLEAR SCREEN AND PROMPT
  118. 19120  IF L = 5210  THEN 5100: REM GET ANOTHER EXEC FILE NAME
  119. 19130  IF L = 5220  THEN 5280: REM IF NOT POSSIBLE TO WRITE TO FILE, THEN CLOSE IT AND ASK TO CONTINUE
  120. 20000  VTAB 23: POKE 36,0: PRINT  CHR$(7)"ERROR # "ERR" IN LINE # "L: STOP : REM  FATAL ERROR
  121. 30000  HOME :TRUE = 1:FALSE = 0:D$ =  CHR$(4):EOL =  -868:EOP =  -958: DIM FILE$(50): DIM FT$(50): DIM FL$(50): DIM MARK$(50)
  122. 30005 FILE$(0) = "COPY ALL FILES ":FT$(0) = "***":FL$(0) = "*"
  123. 30010  VTAB 3: PRINT "            EXEC FILE MAKER            "
  124. 30020  VTAB 5: PRINT "     FOR USE WITH THE COPY COMMAND     "
  125. 30030  VTAB 7: PRINT "   COPYRIGHT (C) 1985 STEVEN HUMPAGE   "
  126. 30040  VTAB 9: PRINT "USE THIS PROGRAM TO GENERATE EXEC FILES"
  127. 30050  PRINT "WHICH WILL COPY FILES FROM ONE         "
  128. 30060  PRINT "DIRECTORY TO ANOTHER. THE SOURCE       "
  129. 30065  PRINT "DIRECTORY MUST BE ON LINE. FIRST ENTER "
  130. 30070  PRINT "THE SOURCE DIRECTORY. ITS FILES WILL BE"
  131. 30080  PRINT "PRINTED ON THE SCREEN. SELECT THE FILES"
  132. 30090  PRINT "YOU WANT TO COPY WITH THE ARROW KEYS   "
  133. 30100  PRINT "AND MARK THEM WITH THE SPACE BAR.      "
  134. 30110  PRINT "PRESS RETURN AND ENTER THE DESTINATION "
  135. 30120  PRINT "PREFIX. NEXT ENTER THE FULL PATH NAME  "
  136. 30130  PRINT "OF THE EXEC FILE. IF IT ALREADY EXISTS "
  137. 30140  PRINT "THE NEW COMMANDS WILL BE ADDED TO THE  "
  138. 30150  PRINT "END OF THE EXISTING FILE.              "
  139. 30170  VTAB 24: POKE 36,0: PRINT "PRESS ANY KEY TO BEGIN";: GET A$
  140. 30180  GOTO 100